package com.fl.nj.mapper;

import com.fl.nj.entity.DbInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;

/**
 * 数据库信息Mapper接口
 * 提供数据库信息的CRUD操作
 */
@Mapper
public interface DbInfoMapper {
    /**
     * 保存数据库信息
     * @param dbInfo 数据库信息实体
     * @return 影响的行数
     */
    int save(DbInfo dbInfo);
    
    /**
     * 批量保存数据库信息
     * @param dbInfoList 数据库信息列表
     * @return 影响的行数
     */
    int batchSave(List<DbInfo> dbInfoList);
    
    /**
     * 更新数据库信息
     * @param dbInfo 数据库信息实体
     * @return 影响的行数
     */
    int update(DbInfo dbInfo);
    
    /**
     * 根据ID获取数据库信息
     * @param id 主键ID
     * @return 数据库信息实体
     */
    DbInfo getById(Long id);
    
    /**
     * 根据数据库配置ID获取数据库信息
     * @param dbConfigId 数据库配置ID
     * @return 数据库信息列表
     */
    List<DbInfo> getByDbConfigId(Long dbConfigId);
    
    /**
     * 根据数据库配置ID和数据库名称获取数据库信息
     * @param params 包含dbConfigId和dbName的参数Map
     * @return 数据库信息实体
     */
    DbInfo getByDbConfigIdAndDbName(Map<String, Object> params);
    
    /**
     * 分页查询数据库信息
     * @param params 包含分页参数和查询条件的Map
     * @return 数据库信息列表
     */
    List<DbInfo> getPageList(Map<String, Object> params);
    
    /**
     * 查询数据库信息总数
     * @param params 包含查询条件的Map
     * @return 数据库信息总数
     */
    int getTotal(Map<String, Object> params);
    
    /**
     * 删除数据库信息
     * @param id 主键ID
     * @return 影响的行数
     */
    int delete(Long id);
    
    /**
     * 根据数据库配置ID删除所有关联的数据库信息
     * @param dbConfigId 数据库配置ID
     * @return 影响的行数
     */
    int deleteByDbConfigId(Long dbConfigId);
}